package cyning.me.libnerss.network; import com.jumige.android.common.utils.LayzLog; import com.squareup.okhttp.Call; import com.squareup.okhttp.Headers; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import org.apache.http.Header; /** * Author: cyning * Date : 2015.04.22 * Time : 下午9:50 * Desc : 类/接口描述 */ public class RestHttpClient { private static RestHttpClient mInstance = null; public static RestHttpClient getInstance() { if (mInstance == null) { synchronized (RestHttpClient.class) { if (mInstance == null) { mInstance = new RestHttpClient(); } } } return mInstance; } private RestHttpClient() { } public void doGet(Object tag, String paramsUrl, Header[] headers, BaseApiHandler baseHandler) { LayzLog.i("url = %s", paramsUrl); if (headers != null) { LayzLog.i("headers = %s", headers.toString()); } LayzLog.i("url = %s", paramsUrl); OkHttpClient mOkHttpClient = AsynHttpClientUtil.INSTANCE.getInstance(); request(RequestType.GET, mOkHttpClient, paramsUrl, headers, tag, baseHandler); } void request(RequestType mRequestType, OkHttpClient mOkHttpClient, String url, Header[] headers, Object tag, BaseApiHandler baseHandler) { Request.Builder mBuilder = new Request.Builder(); mBuilder.url(url); if (mRequestType == RequestType.GET) { mBuilder.get(); } else { mBuilder.post(null); } if (headers != null) { Headers.Builder mHB = new Headers.Builder(); for (int i = 0; i < headers.length; i++) { String value = headers[i].getValue(); String key = headers[i].getName(); mHB.add(key, value); } Headers mHeader = mHB.build(); mBuilder.headers(mHeader); } mBuilder.tag(tag); Call mCall = mOkHttpClient.newCall(mBuilder.build()); mCall.enqueue(baseHandler); } public void doGet(Object tag, String paramsUrl, BaseApiHandler baseHandler) { this.doGet(tag, paramsUrl, null, baseHandler); } public void doPost(Object tag, String paramsUrl, Header[] headers, BaseApiHandler baseHandler) { OkHttpClient mOkHttpClient = AsynHttpClientUtil.INSTANCE.getInstance(); request(RequestType.GET, mOkHttpClient, paramsUrl, headers, tag, baseHandler); } public void cancel(Object object, boolean is) { AsynHttpClientUtil.INSTANCE.getInstance().cancel(object); } public void cancel(Object object) { cancel(object, true); } public static enum AsynHttpClientUtil { INSTANCE; OkHttpClient mAsyncHttpClient = new OkHttpClient(); private static AsynHttpClientUtil mInstance = null; public OkHttpClient getInstance() { return mAsyncHttpClient; } } }